A data processing system may include hardware resources such as a processing unit (CPU), volatile memory (RAM) and non-volatile memory (ROM). The data processing system may operate under the control of at least one operating system and may perform routines according to one or several software resources or applications. Modern data processing systems generally include a memory management unit (MMU) in order to be able to map addresses from a virtual address space to a physical address space. The physical address space is generally smaller than the virtual address space and it is with the judicial use of such a memory management unit that several processes may be run concurrently on the data processing system.
With the advent of multiple connectivity options for data processing systems, including wireless connectivity, and with the huge growth in the use of mobile data processing systems, the need to protect these systems from malicious attacks has become increasingly important. Malicious attacks can be aimed at interfering with system booting, modifying the operating system, intercepting and/or modifying data produced by or utilized by some application.
Indeed, it has now become a necessary requirement to protect data processing systems against fraudulent manipulations and attacks on their integrity. Such malicious attacks may come in the form of software designed to take over a data processing system's operating system or otherwise interfere with the normal processing sequence of the data processing system without the user's knowledge or approval. Such software is generally known as malware. The presence of malware in a data processing system is generally difficult to remedy and can lead to complete system failure or even to irreparable damage to the system.
Computer viruses, worms, Trojan horses, spyware etc. are all different types of malware. The different types of malware can attack the processing system in various ways such as by intercepting data which was meant for another application or by monitoring key strokes in order to steal passwords or other information which is meant to be kept secret, modifying or otherwise altering data or corrupting files, modifying a program in order to cause it to crash or to execute some function which was not originally intended by the user.
One of many ways in which the security of a data processing system may be compromised is via the system's memory management unit. A typical memory management unit maps addresses in a virtual address space to addresses in a physical address space. In some cases the mapping can be predictable. In other cases a user may be able to obtain the mapping from the MMU. In this way a potential hacker can use this information to store some previously written malicious code at a certain location in an appropriate place in the physical address space and cause the data processing system to jump to the location where the malicious code resides thereby disrupting the system in some way. Another possible way to modify the operation of a data processing system is to modify the mapping directly, such that the virtual address maps to a new physical address where the malicious software resides. It is the aim of the present invention to circumvent the possibility of a potential hacker being able to properly predict the mapping of the virtual address space to the physical address space.